//
//  MCCard.h
//  ApexIOTCardSDK
//
//  Created by 黄亮东 on 16/5/10.
//  Copyright © 2016年 珠海艾派克科技股份有限公司. All rights reserved.
//
/**
 * 卡片对象，代表一张NFC卡，每一个对象之间不同，是通过卡标识对象来表示的，存储在卡里面的内容则是通过文件来表示的。
 *
 * 不同的通讯或者存储格式协议，应该在不同的版本中予以分别实现，对于SDK上层来说，卡片相关信息及文件与卡片存储数据具体物理格式无关。
 *
 * 卡片对象主要包括卡标识对象、基本的卡片信息、卡文件清单，该对象具有辅助标识存储缓存数据管理的作用，可加快数据读写的缓冲管理。
 *
 * 上层对象不可以直接创建卡片对象，只能通过监听NFC感应设备对象Device，来获卡实例对象，
 * 但是一旦从Device中触发的事件中获得了相应的卡对象，则可以通过调用CardManager本地卡管理接口来缓冲对象，
 * 从而在后续无需通过Device贴卡事件，就可以直接从CardManager中获取本地的可用的Card对象及其相关的信息。
 *
 * @since 1.0
 * @version 1.0
 * @author ys
 *
 */
#import <Foundation/Foundation.h>
#import "MCCardFile.h"

typedef NS_ENUM(NSInteger, MCCardType){
    /**
     * 表示卡片种类，名片卡
     */
    MCCardType_TYPE_NAME_CARD = 0x0001,
    /**
     * 表示卡片种类，VIP卡
     */
    MCCardType_TYPE_VIP_CARD = 0x0101,
    /**
     * 表示卡片种类，生日卡
     */
    MCCardType_TYPE_BIRHDAY_CARD = 0x0201,
    /**
     * 表示卡片种类，婚庆卡
     */
    MCCardType_TYPE_WEDDING_CARD = 0x0202,
    /**
     * 表示卡片种类，圣诞卡
     */
    MCCardType_TYPE_CHRISTMAS_CARD = 0x0203,
    /**
     * 表示卡片种类，宠物卡
     */
    MCCardType_TYPE_PET_CARD = 0x0301,
    /**
     * 表示卡片种类，成长相册
     */
    MCCardType_TYPE_GROWING_CARD = 0x0302,
    /**
     * 表示卡片种类，成长相册
     */
    MCCardType_TYPE_GROWMEMO_CARD = 0x0303,
    /**
     * 表示卡片种类，纪念卡
     */
    MCCardType_TYPE_MEMO_CARD = 0x0401,
    /**
     * 表示卡片种类，校园卡
     */
    MCCardType_TYPE_SCHOOL_CARD = 0x0402,
    /**
     * 表示卡片种类，包装盒
     */
    MCCardType_TYPE_PACKAGE_CARD = 0x0501,
    /**
     * 表示卡片种类，礼品盒
     */
    MCCardType_TYPE_GIFT_CARD = 0x0502,
    /**
     * 表示卡片种类，药品盒
     */
    MCCardType_TYPE_MEDICINE_CARD = 0x0503,
    /**
     * 表示卡片种类，祝福开光用品
     */
    MCCardType_TYPE_BLESSING_CARD = 0x0601,
    MCCardType_None = 0x0
};

typedef NS_ENUM(NSInteger, MCCardContentStatus){
    /**
     * 空卡，或者数据不完整
     */
    MCCardContentStatus_CONTENT_BLANK = 1,
    /**
     * 正常有内容的卡片，并且数据是完整的。
     */
    MCCardContentStatus_CONTENT_READY = 2,
    /**
     * 内容还在写的过程中。
     */
    MCCardContentStatus_CONTENT_PROCESS = 3,
    MCCardContentStatus_None = 0x0
};
@interface MCCard : NSObject

/**
 * 卡片状态。
 */
@property (nonatomic, assign, readonly) MCCardContentStatus contentStatus;
/**
 * 卡片支持的最大存储容量。
 */
@property (nonatomic, assign, readonly) NSInteger capacity;
/**
 * 获得卡片类型，例如：纪念卡，毕业卡，宠物卡，名片，贺卡等。
 */
@property (nonatomic,assign) MCCardType type;
/**
 * 获得卡名称。
 */
@property (nonatomic,strong) NSString *name;
/**
 * 获得卡打包时间。
 */
@property (nonatomic, assign, readonly) NSInteger createdTime;
/**
 * 获得卡ID，每个卡之间的ID需保证唯一性。
 */
@property (nonatomic, copy ,readonly) NSString *Id;
/**
 * 列出当前卡中存在的文件名称清单。
 *
 * 该顺序默认为与文件在卡里面的物理存储位置相同。
 */
@property (nonatomic, strong) NSMutableArray<MCCardFile *> *listFile;
/**
 * 卡片总体读取进度，范围为0~1
 */
@property (nonatomic, assign) float rateOfProgress;
@end
